package com.example.leetcode.day;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * 给定两个字符串 s 和 t ，判断它们是否是同构的。
 *
 * 如果 s 中的字符可以按某种映射关系替换得到 t ，那么这两个字符串是同构的。
 *
 * 每个出现的字符都应当映射到另一个字符，同时不改变字符的顺序。不同字符不能映射到同一个字符上，相同字符只能映射到同一个字符上，字符可以映射到自己本身。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/isomorphic-strings
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test205 {

    public boolean isIsomorphic(String s, String t) {
        Map<Character,Character> map = new HashMap<>();
        Map<Character,Character> map1 = new HashMap<>();
        for (int i = 0;i<s.length(); i++) {
            char c = s.charAt(i);
            char c1 = t.charAt(i);
            if (map.containsKey(c) && map.get(c) != c1) {
                return false;
            }
            if (map1.containsKey(c1) && map1.get(c1) != c) {
                return false;
            }
            map.put(c,c1);
            map1.put(c1,c);
        }
        return true;
    }

    public static void main(String[] args) {
        Test205 t = new Test205();
        System.out.println(t.isIsomorphic("foo", "bar"));
    }
}
